package de.recipeminer.models.processing;

/**
 * Provides means to group objects together that represent different intermediate states of an artifact that has to
 * pass several processing steps before it becomes part of a final result. (In our use case: The input artifact is a
 * raw recipe, the first ProcessingArtifact with a certain UUID. The extracted recipe from a raw recipe  is another
 * instance of ProcessingArtifact with identical UUID, and so on).
 */
public @interface ProcessingArtifact {
    /**
     * The last processing phase that was sucessfully completed involving this ProcessingArtifact.
     *
     * @return the completed phase of processing
     */
    public ProcessingPhase processingPhase();

    /**
     * States whether information from several input artifacts were combined to construct this ProcessingArtifact.
     *
     * @return true if this is an agregated TracableArtifact
     */
    public boolean aggregated();
}

